Skip to content

docs(spec): record text.value as deliberately omitted (#13670) - #13820

Merged
os-warren merged 1 commit into
mainfrom
claude/issue-13670-text-value-known-omitted
Aug 31, 2026
Merged

docs(spec): record text.value as deliberately omitted (#13670)#13820
os-warren merged 1 commit into
mainfrom
claude/issue-13670-text-value-known-omitted

Conversation

@os-warren

Copy link
Copy Markdown
Collaborator

Fixes #13670

Scope

Spec-side implementation of ruling comment #13670 (comment-5478581056) clause 2 only:
packages/spec/src/ui/expression-bindable-text-keys.zod.ts's docblock "known-omitted"
list did not mention text. It now records that text.value is deliberately OUT —
text's intended evaluation channel is content alone (its own already-evaluated
carriage leg), value is only the renderer's schema.content || schema.value fallback
spelling for the same slot, and a text: ['value'] row would legitimize that fallback
and give one slot two declared evaluation paths.

⛔ No carriage row added, no behavior/runtime code touched, no text entry in
EXPRESSION_BINDABLE_TEXT_KEYS_BY_COMPONENT. objectui#7015 (23 tutorial occurrences,
valuecontent) and objectui#7016 (the TextSchema.value fallback-spelling ADR-0049
enforce-or-remove question) are separate, out of scope here.

Change

  • packages/spec/src/ui/expression-bindable-text-keys.zod.ts — one paragraph added to
    the module docblock's "Why these rows" section, citing this issue's ruling.
  • content/docs/references/ui/expression-bindable-text-keys.mdx — regenerated projection
    of the same docblock (pnpm --filter @objectstack/spec gen:docs, via
    check:generated --fix; never hand-edited).

Premise check

Verified against origin/main before editing: the docblock's known-omitted list
(alert/empty/dialog/badge/form-inputs) still had no text entry — premise held.

Tests

At commit 5fcfcf7d (this PR's head):

  • pnpm --filter @objectstack/spec build — clean (34/34 declared .d.ts present).
  • pnpm --filter @objectstack/spec typecheck (tsc --noEmit + scripts + test-layer
    typecheck) — clean; the pre-existing test-typecheck-debt.json ledger (262 errors /
    146 pinned signatures) is unchanged, shrink-only baseline, unrelated to this diff.
  • node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack — derived 48
    local gate families for this diff's 2 changed paths. Ran all 48 (captured pipeline
    status before any pipe, per AGENTS.md):
    • 42/48 exit 0 (including check:generated, check:authorable-surface,
      check:docs, check:doc-authoring, check:doc-anchors, check:corpus-claim-drift,
      check:quick-reference-counts, check:cross-package-test-inputs, and the rest).
    • 6/48 self-report PREREQUISITE NOT MET / NOT MEASURED (exit 1 or 3, not exit-0
      findings): check-dev-prereqs, check-test-completeness (explicitly documents it
      is unreachable without a saved turbo run test log), check:doc-formula-expressions,
      check:doc-security-posture, check:skill-examples, check:dual-build-cjs-loads
      all six gate on a full pnpm build across the ~79-package workspace (missing
      dist/ for @objectstack/formula, @objectstack/lint, @objectstack/client-react,
      and ~70 more), which is out of this task's local-verification scope (AGENTS.md
      "本地验证范围" — the farm is CI's run, not a single-file docblock PR's). None of the
      six reads or gates the two files this PR touches. Read as NOT MEASURED, not green,
      not red.
    • 0/48 red findings.
  • check:generated — clean after --fix regenerated exactly the one stale artifact
    (content/docs/references/**); no other of the 14 tracked artifacts moved.
  • grep -naP '[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]' over both changed files — no control
    bytes.

Changeset

None. packages/spec/src/ui/expression-bindable-text-keys.zod.ts's diff is comment-only
(no export, no schema, no runtime behavior changed); content/docs/references/** is its
regenerated projection. Nothing is released differently by this PR. skip-changeset
label applied (additive) per this repo's real skip-changeset mechanism.


Generated by Claude Code

The expression-bindable-text-keys module's docblock lists the
component-renderer read points it deliberately has not declared a row
for yet. `text`'s fallback read of `schema.value` (behind
`schema.content || schema.value`) was missing from that list, leaving
the omission unrecorded rather than decided.

The #13670 ruling settled the question: text's intended evaluation
channel is `content` alone, and `text.value` is declared OUT — adding
a `text: ['value']` row would legitimize a second evaluation path for
the same slot. This records that decision in the docblock's known-
omitted list, with the ruling cited. No carriage row, no behavior
change; `content/docs/references/ui/expression-bindable-text-keys.mdx`
is the regenerated projection (`pnpm --filter @objectstack/spec
gen:docs`).

_Generated by [Claude Code](https://claude.ai/code/session_01PBjwYLS6BciTQW3c9xQiD2)_
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

⚠️ 1 changed file(s) yielded no anchor (packages/spec/src/ui/expression-bindable-text-keys.zod.ts), so the pages documenting them are NOT COVERED by this run — this is not a clean bill of health for those files. Nothing else in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 1 changed package(s)).

What this run could not see
  • 1 changed file(s) yielded no anchor (packages/spec/src/ui/expression-bindable-text-keys.zod.ts) — pages documenting those are invisible to this run
  • a page that states a rule by its inputs shares no identifier with the emitter that implements the rule, so an emitter-only diff cannot list it — not on this run and not on any run. Measured on fix(driver-sql): emit varchar(maxLength) for a text field a declared index keys on #11430: content/docs/protocol/objectql/types.mdx documents the text-family column mapping by the ObjectQL type names it maps FROM (text / textarea / html) while the diff changed createColumn; it went unlisted, and it was the page that diff falsified, in four places. No shared token exists to detect this on, so a rule your change carries has to be re-read by hand in the pages that restate it.

Coarse fallback — 127 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): node scripts/docs-audit/affected-docs.mjs --json e72ded02381dd2704a30b01e680faf486e85ea97packageMentionDocs.

@os-warren os-warren added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Aug 31, 2026 — with Claude
@github-actions github-actions Bot added documentation Improvements or additions to documentation protocol:ui labels Aug 31, 2026
@os-warren
os-warren marked this pull request as ready for review August 31, 2026 14:40
@os-warren
os-warren enabled auto-merge August 31, 2026 14:41
@os-warren
os-warren added this pull request to the merge queue Aug 31, 2026
Merged via the queue into main with commit 8c6a7fc Aug 31, 2026
38 checks passed
@os-warren
os-warren deleted the claude/issue-13670-text-value-known-omitted branch August 31, 2026 15:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation protocol:ui size/s skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

EXPRESSION_BINDABLE_TEXT_KEYS_BY_COMPONENT has no text row, but ui:text reads schema.value at the node top level — and the guides teach it

2 participants